package com.builder;

import java.util.ArrayList;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.ViewScoped;

import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Restrictions;
import org.springframework.dao.DataAccessException;

import com.model.ProductoCodigo;
import com.model.Tarifario;
import com.view.ProductoPrecioView;
import com.view.TarifarioView;

@ManagedBean
@ViewScoped
@SuppressWarnings("serial")
public class TarifarioBuilder extends BaseBuilder<TarifarioView, Tarifario> {

	@ManagedProperty("#{productoPrecioBuilder}")
	private ProductoPrecioBuilder productoPrecioBuilder;

	@ManagedProperty("#{proveedorBuilder}")
	private ProveedorBuilder proveedorBuilder;

	@Override
	public Tarifario toDomain(TarifarioView view) {
		return new Tarifario(
				view.getId(),
				view.getTipoTarifario(),
				view.getFechaDesde(),
				view.getFechaHasta(),
				view.getProveedor() != null ? proveedorBuilder.toDomain(view
						.getProveedor()) : null,
				view.getListaProductoPrecio() != null
						&& view.getListaProductoPrecio().size() > 0 ? productoPrecioBuilder
						.toDomain(view.getListaProductoPrecio()) : null);
	}

	@Override
	public TarifarioView toView(Tarifario model) {
		return new TarifarioView(model.getID(), model.getTipoTarifario(),
				model.getFechaDesde(), model.getFechaHasta(),
				model.getProveedor() != null ? proveedorBuilder.toView(model
						.getProveedor()) : null,
				model.getListaProductoPrecio() != null ? productoPrecioBuilder
						.toView(model.getListaProductoPrecio())
						: new ArrayList<ProductoPrecioView>());
	}

	
	public ProductoPrecioBuilder getProductoPrecioBuilder() {
		return productoPrecioBuilder;
	}

	public void setProductoPrecioBuilder(
			ProductoPrecioBuilder productoPrecioBuilder) {
		this.productoPrecioBuilder = productoPrecioBuilder;
	}

	public ProveedorBuilder getProveedorBuilder() {
		return proveedorBuilder;
	}

	public void setProveedorBuilder(ProveedorBuilder proveedorBuilder) {
		this.proveedorBuilder = proveedorBuilder;
	}

}
